package render;

/**
 * defines a geometric primitive.
 * primitives should provide a material definition and implement functions to calculate intersections with rays
 * and retrieve normals for arbitrary face points
 * 
 * @author Robbe
 *
 */
public interface Primitive {	
	// needed for rendering
	double intersection(double[] x, double[] d);
	double[] getNormal(double[] p);
	Material getMaterial();
	// needed for kd-tree
	public static enum Postion {NEAR, FAR, BOTH}
	public Postion inHalfSpace(double m, int axis);
	public double[] getPostion();
}
